package day03;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

/**
 * 实现时间的计算: 要求用户输入身份证号，若格式有误，要求其重新输入。然后根据身份证号码输出20岁生日
 * 所在周的周三的日期。
 * 例如:
 * 出生日期:1992-07-15。
 * 20岁生日:2012-07-15
 * 当周的周三为:2012-07-18
 * @author Bonnie
 *
 */
public class Test05 {
    public static void main(String[] args) throws ParseException {
        String regex="(\\d{18}|\\d{17}X)";
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入身份证号码");
        String card;
        while (true){
            card = sc.next();
            boolean matches = card.matches(regex);
            if(matches){
                break;
            }
            else {
                System.out.println("输入错误，请重新输入");
            }
        }
        String s=card.substring(6,14);
        System.out.println(s);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
        Date parse = simpleDateFormat.parse(s);
        System.out.println(parse);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(parse);
        calendar.add(Calendar.YEAR,20);
        System.out.println(calendar);
        calendar.set(Calendar.DAY_OF_WEEK,4);
        Date time = calendar.getTime();
        String s1=simpleDateFormat.format(time);
        System.out.println(s1);
    }
}
